package com.wesley.future.DaoImp;

import java.util.List;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Restrictions;

import com.wesley.future.Dao.UsuarioDao;
import com.wesley.future.Model.Usuario;
import com.wesley.future.Utils.HibernateUtil;

public class UsuarioDaoImp implements UsuarioDao {

	@Override
	public void save(Usuario usuario) {
		Session session = HibernateUtil.getSessionFactory().openSession();
		Transaction U = session.beginTransaction();
		U.begin();
		session.save(usuario);
		U.commit();
		
	}

	@Override
	public Usuario getUsuario(long id) {
		Session session = HibernateUtil.getSessionFactory().openSession();
		return(Usuario) session.load(Usuario.class,id);
		
	}

	@Override
	public List<Usuario> list() {
		Session session = HibernateUtil.getSessionFactory().openSession();
		List lista = session.createCriteria(Usuario.class).list();
		return lista;
		}

	@Override
	public void remove(Usuario usuario) {
		Session session = HibernateUtil.getSessionFactory().openSession();
		Transaction U = session.beginTransaction();
		
		session.delete(usuario);
		U.commit();
		
	}

	@Override
	public void update(Usuario usuario) {
		Session session = HibernateUtil.getSessionFactory().openSession();
		Transaction t = session.beginTransaction();
		session.update(usuario);
		t.commit();
	}
	
	@SuppressWarnings("unchecked")
	@Override
	public List<Usuario> listByParameter(String nome) {
		Session session = HibernateUtil.getSessionFactory().openSession();
		
		return session.createCriteria(Usuario.class).add(Restrictions.ilike("Nome", nome, MatchMode.ANYWHERE)).list();
		
	}

}
